// 病历模板类型定义

/** 病历模板项 */
export interface TemplateItem {
  /** 模板ID */
  templateId: number;
  /** 模板名称 */
  templateName: string;
  /** 所属分组ID */
  groupId: number;
  /** 推荐场景 */
  recomScene: string;
  /** 是否共享 0-不共享 1-共享 */
  isShare: string;
  /** 共享分组ID */
  shareGroupId: number | null;
}

/** 病历模板分组 */
export interface TemplateGroup {
  /** 分组ID */
  groupId: number;
  /** 分组名称 */
  groupName: string;
  /** 模板类型 1-中医 2-西医 */
  templateType: string;
  /** 模板列表 */
  templateList: TemplateItem[];
}

/** 病历模板分组列表响应 */
export interface QueryData {
  groupName?: string;
  templateType?: string;
  templateId?: number;
  templateCategory?: string;
  groupId?: number;
}

/** 病历模板分组列表响应 */
export interface TemplateGroupListResponse {
  /** 响应状态码 */
  code: string;
  /** 响应消息 */
  msg: string;
  /** 时间戳 */
  timestamp: number;
  /** 分组数据列表 */
  data: TemplateGroup[];
  /** 是否成功 */
  ok: boolean;
}

/** 创建/更新模板分组请求参数 */
export interface CreateTemplateGroupRequest {
  /** 分组名称 */
  groupName: string;
  /** 模板类型 1-中医 2-西医 */
  templateType: string;
}

/** 更新模板分组请求参数 */
export interface UpdateTemplateGroupRequest extends CreateTemplateGroupRequest {
  /** 分组ID */
  groupId: number;
}

/** 创建/更新模板请求参数 */
export interface CreateTemplateRequest {
  /** 模板名称 */
  templateName: string;
  /** 所属分组ID */
  groupId: number;
  /** 推荐场景 */
  recomScene: string;
  /** 是否共享 0-不共享 1-共享 */
  isShare: string;
  /** 共享分组ID（可选） */
  shareGroupId?: number;
}

/** 更新模板请求参数 */
export interface UpdateTemplateRequest extends CreateTemplateRequest {
  /** 模板ID */
  templateId: number;
}

/** 模板类型枚举 */
export enum TemplateType {
  /** 中医 */
  CHINESE = '1',
  /** 西医 */
  WESTERN = '2'
}

/** 共享状态枚举 */
export enum ShareStatus {
  /** 不共享 */
  NOT_SHARED = '0',
  /** 共享 */
  SHARED = '1'
}

/** 模板查询参数 */
export interface TemplateQueryParams {
  /** 分组ID（可选） */
  groupId?: number;
  /** 模板类型（可选） */
  templateType?: string;
  /** 关键词搜索（可选） */
  keyword?: string;
}

// 工具函数类型

/** 根据模板类型获取类型名称 */
export const getTemplateTypeName = (type: string): string => {
  switch (type) {
    case TemplateType.CHINESE:
      return '中医';
    case TemplateType.WESTERN:
      return '西医';
    default:
      return '未知';
  }
};

/** 根据共享状态获取状态名称 */
export const getShareStatusName = (status: string): string => {
  switch (status) {
    case ShareStatus.SHARED:
      return '已共享';
    case ShareStatus.NOT_SHARED:
      return '未共享';
    default:
      return '未知';
  }
};

/** 格式化推荐场景 */
export const formatRecomScene = (scene: string): string[] => {
  return scene ? scene.split(',').filter(item => item.trim()) : [];
};
